#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
void  inverse(LinkList L)
{// 逆置带头结点的单链表 L
    LNode *p=L->next;  
    L->next=NULL;
    while (p) {
        LNode *q=p->next;    // q指向*p的后继
        p->next=L->next;
        L->next=p;       // *p插入在头结点之后
        p = q;
    }
}
void print(LinkList L){
    LNode *p=L->next;
    while (p) {
        printf("%d\n",p->data);
        p=p->next;
    } 
}
void BuildList(LinkList L)
{
    int m;
    printf("list size。m=");
    scanf("%d",&m);
	printf("\nstart setup...\n");
	for(int i=0;i<m;i++)
	{
	   printf("\n请输入第%d个元素：",i+1);
       LNode* node1=(LNode*)malloc(sizeof(LNode));
	   scanf("%d",&node1->data);
	}
	printf("\ncomplete！...\n");
}

int main(){
    LinkList L=(LinkList)malloc(sizeof(LNode));//LNODE* L=(LNODE*)malloc(sizeof(LNODE));
    L->next=NULL;
    LNode* node1=(LNode*)malloc(sizeof(LNode));
    L->next=node1;
    node1->data=1;
    node1->next=NULL;
    LNode *node2=(LNode*)malloc(sizeof(LNode));
    node1->next=node2;
    node2->data=2;
    node2->next=NULL;
    print(L);
    inverse(L);
    print(L);
    return 0;
}